From a9e0cf77a04ef6214ea1618aa60f346d75a87697 Mon Sep 17 00:00:00 2001 From: Emmanuele Bassi Date: Wed, 22 Jul 2020 13:11:28 +0100 Subject: [PATCH] a11y: Update labelled-by when setting mnemonic labels The ARIA labelled-by attribute behaves the same way as the mnemonic labels in GTK. --- gtk/gtkwidget.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/gtk/gtkwidget.c b/gtk/gtkwidget.c index 49121957e5..b3e1c61e68 100644 --- a/gtk/gtkwidget.c +++ b/gtk/gtkwidget.c @@ -8960,6 +8960,10 @@ gtk_widget_add_mnemonic_label (GtkWidget *widget, g_object_set_qdata_full (G_OBJECT (widget), quark_mnemonic_labels, new_list, (GDestroyNotify) g_slist_free); + + gtk_accessible_update_relation (GTK_ACCESSIBLE (widget), + GTK_ACCESSIBLE_RELATION_LABELLED_BY, new_list, + -1); } /** @@ -8988,6 +8992,19 @@ gtk_widget_remove_mnemonic_label (GtkWidget *widget, if (new_list) g_object_set_qdata_full (G_OBJECT (widget), quark_mnemonic_labels, new_list, (GDestroyNotify) g_slist_free); + + if (new_list != NULL && new_list->data != NULL) + { + gtk_accessible_update_relation (GTK_ACCESSIBLE (widget), + GTK_ACCESSIBLE_RELATION_LABELLED_BY, new_list, + -1); + } + else + { + gtk_accessible_update_relation (GTK_ACCESSIBLE (widget), + GTK_ACCESSIBLE_RELATION_LABELLED_BY, NULL, + -1); + } } /** -- 2.30.2